package com.woniuxy.rms.dao;

import com.woniuxy.rms.dto.DynamicDTO;
import com.woniuxy.rms.pojo.Dynamic;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Date;
import java.util.List;


public interface DynamicMapper {
    int deleteByPrimaryKey(Long id);

    int insert(Dynamic record);

    int insertSelective(Dynamic record);

    Dynamic selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(Dynamic record);

    int updateByPrimaryKey(Dynamic record);

    /**
     * Description : 分页查询到动态基本信息  <br/>
     * ChangeLog : 1. 创建 (2020/3/25 0025 下午 6:34 [ChenGang]);
     * @param currentPage
     * @param pageSize
     * @return java.util.List<com.woniuxy.rms.dto.DynamicDTO>
    */
    @Select("select dynamic.*,dynamic_detail.dynamic_img,Users.user_name from dynamic left join dynamic_detail on dynamic.id = dynamic_detail.dynamic_id " +
            "left join Users on dynamic_detail.user_id = Users.id")
    List<DynamicDTO> findAll(@Param("currentPage") Integer currentPage,@Param("pageSize") Integer pageSize);

    /**
     * Description : 批量删除动态  <br/>
     * ChangeLog : 1. 创建 (2020/3/25 0025 下午 6:55 [Administrator]);
     * @param dynamicIds
     * @return void
    */
    void deleteByIds(List<Long> dynamicIds);

    /**
     * Description : 时间范围查询  <br/>
     * ChangeLog : 1. 创建 (2020/3/25 0025 下午 8:28 [Administrator]);
     * @param startTime 开始时间
     * @param endTime  结束时间
     * @return java.util.List<com.woniuxy.rms.dto.DynamicDTO>
    */
    List<DynamicDTO> findScopeTime(@Param("startTime") Date startTime,@Param("endTime") Date endTime,
                                   @Param("currentPage") Integer currentPage,@Param("pageSize") Integer pageSize);

    /**
     * Description : 获取时间段内的id  <br/>
     * ChangeLog : 1. 创建 (2020/3/26 0026 下午 7:39 [Administrator]);
     * @param startTime
     * @param endTime
     * @return java.util.List<java.lang.Long>
    */
    @Select("select id from dynamic where create_time between #{startTime} and #{endTime}")
    List<Long> findByTime(@Param("startTime") Date startTime,@Param("endTime") Date endTime);
}